const foo1 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve(1);
  }, 1000);
});

const foo2 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve(2);
  }, 6000);
});

const foo3 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve(3);
  }, 3000);
});

const foo4 = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve(4);
  }, 4000);
});

// foo1.then(res => {
//   console.log(res);
//   foo2.then(res => {
//     console.log(res);
//     foo3.then(res => {
//       console.log(res);
//     });
//   });
// });

foo1
  .then(res => {
    console.log(res);
    return foo2;
  })
  .then(res => {
    console.log(res);
    return foo3;
  })
  .then(res => {
    console.log(res);
    return foo4;
  })
  .then(res => {
    console.log(res);
  });
